package com.chromatic.competition.inteface;

import com.chromatic.competition.model.UserAccount;
import com.chromatic.competition.model.UserInformation;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.PUT;
import retrofit2.http.Path;

public interface UserCheckService {
    /**
     * 发起GET请求以获取用户账户信息
     *
     * @param userId 用户ID
     * @return 包含用户账户信息的Call对象
     */
    @GET("/api/user/get/{userId}")
    Call<UserAccount> getUserAccount(@Path("userId") int userId);

    /**
     * 发起PUT请求以更新用户账户信息
     *
     * @param userId      用户ID
     * @param userAccount 要更新的用户账户信息
     * @return 包含更新后的用户账户信息的Call对象
     */
    @PUT("/api/user/update/{userId}")
    Call<UserAccount> updateUserAccount(@Path("userId") int userId, @Body UserAccount userAccount);

    /**
     * 发起GET请求以获取用户信息
     *
     * @param userId 用户ID
     * @return 包含用户信息的Call对象
     */
    @GET("/api/user-information/get/{userId}")
    Call<UserInformation> getUserInformation(@Path("userId") int userId);

    /**
     * 发起PUT请求以更新用户信息
     *
     * @param userId         用户ID
     * @param userInformation 要更新的用户信息
     * @return 包含更新后的用户信息的Call对象
     */
    @PUT("/api/user-information/update/{userId}")
    Call<UserInformation> updateUserInformation(@Path("userId") int userId, @Body UserInformation userInformation);

    /**
     * 发起GET请求以获取用户昵称
     *
     * @param userId 用户ID
     * @return 包含用户昵称的Call对象
     */
    @GET("/api/user-information/get/{userId}/nickname")
    Call<String> getUserNickname(@Path("userId") int userId);
}